#include<bits/stdc++.h>
#define int long long
#define db long double
#define pii pair<int,int>
#define fi first
#define sd second
using namespace std;
const int N=5e5+5;
inline int read(){
	int x=0,f=1;char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
	while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-48,ch=getchar();}
	return x*f;
}
int n,f[N],t[N],b[N],tot;
bool vis[N];
db pk[N];

set<pair<db,int> > res,res2;

signed main(){
	freopen("love.in","r",stdin);
	freopen("love.out","w",stdout);
	n=read();
	while(n--){
		int opt=read();
		if(opt==1){
			++tot;
			f[tot]=read(),t[tot]=read(),b[tot]=read();
			vis[tot]=1;
			
			auto it=res.begin();
			while(it!=res.end()){
				pair<db,int> pl=*it;
				pl.fi+=fabs((db)t[tot]*((db)f[tot]-pk[pl.sd])+b[tot]);
				res2.insert(pl);
				++it;
			}
			swap(res,res2);
			res2.clear();
			
			if(t[tot]){
				pk[tot]=((db)f[tot]*t[tot]+b[tot])/(db)t[tot];
				db sum=0;
				for(int i=1;i<tot;i++)
					if(vis[i]) sum=sum+fabs((db)t[i]*((db)f[i]-pk[tot])+b[i]); 
				res.insert({sum,tot});
			}
		}
		else{
			int p=read();
			vis[p]=0;
			for(pair<db,int> pl:res){
				if(pl.sd==p){
					res.erase(pl);
					break;
				}
			}	
			auto it=res.begin();
			while(it!=res.end()){
				pair<db,int> pl=*it;
				pl.fi-=fabs((db)t[p]*((db)f[p]-pk[pl.sd])+b[p]);
				res2.insert(pl);
				++it;
			}
			swap(res,res2);
			res2.clear();
		}
		if(res.empty()) puts("0");
		else printf("%.10Lf\n",(*res.begin()).fi);
	}
	return 0;
}

